"""
    可迭代对象工具集
        1.学习函数式编程思想
            分/隔/做
"""
class IterableHelper:
    """
        可迭代对象助手类：对可迭代对象常用的高阶函数
    """
    # 静态方法：不操作实例成员/类方法
    @staticmethod
    def find_single(iterable,condition):
        """
            在迭代对象中，查找满足条件的单个元素
        :param iterable: 可迭代对象
        :param condition: 函数类型的查找条件
        :return: 返回元素
        """
        for item in iterable:
            if condition(item):
                return item

    @staticmethod
    def find_all(iterable,condition):
        """
            在可迭代对象中，查找满足条件的所有元素
        :param iterable: 可迭代对象
        :param condition: 函数类型的查找条件
        :return: 生成器，推算满足条件的元素
        """
        for item in iterable:
            if condition(item):
                yield item

    @staticmethod
    def select(iterable,condition):
        """
            在可迭代对象中根据条件选择成员
        :param iterable: 可迭代对象
        :param condition: 函数类型的选择策略
        :return: 生成器，推算出元素的成员
        """
        for item in iterable:
            yield condition(item)

    @staticmethod
    def order_by(iterable, condition):
        for r in range(len(iterable) -1):
            for c in range(r+1,len(iterable)):
                if condition(iterable[r]) > condition(iterable[c]):
                    iterable[r],iterable[c] = iterable[c],iterable[r]